package com.iran;

import java.util.Arrays;

/**
 * 插入排序（Insertion-Sort）的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列，对于未排序数据，
 * 在已排序序列中从后向前扫描，找到相应位置并插入。插入排序在实现上，通常采用in-place排序（即只需用到O(1)的额外空间的排序），
 * 因而在从后向前扫描过程中，需要反复把已排序元素逐步向后挪位，为最新元素提供插入空间。
 */
public class InsertSort {
    public static void main(String[] args) {
        int[] arr = {0,23,45,9,40,73,12,49,423,122,33,44,55,66,77,88,99,101,102,133,144};
        long s1 = System.currentTimeMillis();
        for (int i = 1; i < arr.length; i++) {
            int j = i-1;
            int temp = arr[i];
            while (j>=0&&arr[j]>temp){
                arr[j+1]=arr[j];
                j--;
            }
            arr[j+1]=temp;
        }
        System.out.println("耗时:"+(System.currentTimeMillis()-s1));
        Arrays.stream(arr).forEach(System.out::println);
    }
}
